if (!acm_bin_pol.policy_reference_name)
return -ENOMEM;
- strcpy(acm_bin_pol.policy_reference_name, (char *)(buf + sizeof(struct acm_policy_reference_buffer)));
- printk("%s: Activating policy %s\n", __func__, acm_bin_pol.policy_reference_name);
+ strlcpy(acm_bin_pol.policy_reference_name,
+ (char *)(buf + sizeof(struct acm_policy_reference_buffer)),
+ ntohl(pr->len));
+ printk("%s: Activating policy %s\n", __func__,
+ acm_bin_pol.policy_reference_name);
return 0;
}
memset(buf, 0, ret);
pr_buf->len = htonl(strlen(acm_bin_pol.policy_reference_name) + 1); /* including stringend '\0' */
- strcpy((char *)(buf + sizeof(struct acm_policy_reference_buffer)),
- acm_bin_pol.policy_reference_name);
+ strlcpy((char *)(buf + sizeof(struct acm_policy_reference_buffer)),
+ acm_bin_pol.policy_reference_name,
+ ntohl(pr_buf->len));
return ret;
}
if (c->cpuid_level == -1) {
/* No cpuid. It must be an ancient CPU */
if (c->x86 == 4)
- strcpy(c->x86_model_id, "486");
+ safe_strcpy(c->x86_model_id, "486");
else if (c->x86 == 3)
- strcpy(c->x86_model_id, "386");
+ safe_strcpy(c->x86_model_id, "386");
}
}
char *p;
p = table_lookup_model(c);
if ( p )
- strcpy(c->x86_model_id, p);
+ safe_strcpy(c->x86_model_id, p);
else
/* Last resort... */
snprintf(c->x86_model_id, sizeof(c->x86_model_id),
static void __init init_cyrix(struct cpuinfo_x86 *c)
{
unsigned char dir0, dir0_msn, dir0_lsn, dir1 = 0;
- char *buf = c->x86_model_id;
const char *p = NULL;
/* Bit 31 in normal CPUID used for nonstandard 3DNow ID;
dir0_msn = 7;
break;
}
- strcpy(buf, Cx86_model[dir0_msn & 7]);
- if (p) strcat(buf, p);
+ safe_strcpy(c->x86_model_id, Cx86_model[dir0_msn & 7]);
+ if (p) strcat(c->x86_model_id, p);
return;
}
if ( c->x86 == 4 && test_cyrix_52div() ) {
unsigned char dir0, dir1;
- strcpy(c->x86_vendor_id, "CyrixInstead");
+ safe_strcpy(c->x86_vendor_id, "CyrixInstead");
c->x86_vendor = X86_VENDOR_CYRIX;
/* Actually enable cpuid on the older cyrix */
}
if ( p )
- strcpy(c->x86_model_id, p);
+ safe_strcpy(c->x86_model_id, p);
c->x86_max_cores = num_cpu_cores(c);
return;
dmi_ident[slot] = alloc_bootmem(strlen(p)+1);
if(dmi_ident[slot])
- strcpy(dmi_ident[slot], p);
+ safe_strcpy(dmi_ident[slot], p);
else
printk(KERN_ERR "dmi_save_ident: out of memory.\n");
}
memset(si->cmd_line, 0, sizeof(si->cmd_line));
if ( cmdline != NULL )
- strlcpy((char *)si->cmd_line, cmdline, sizeof(si->cmd_line));
+ safe_strcpy(si->cmd_line, cmdline);
if ( fill_console_start_info((void *)(si + 1)) )
{
return -1;
}
- strlcpy(se->idstr, idstr, HVM_SE_IDSTR_LEN);
+ safe_strcpy(se->idstr, idstr);
se->instance_id = instance_id;
se->version_id = version_id;
for(se = v->domain->arch.hvm_domain.first_se; se != NULL; se = se->next) {
/* ID string */
- len = strnlen(se->idstr, HVM_SE_IDSTR_LEN);
+ len = strnlen(se->idstr, sizeof(se->idstr));
hvm_put_8u(h, len);
hvm_put_buffer(h, se->idstr, len);
HVMStateEntry *se;
for(se = d->arch.hvm_domain.first_se; se != NULL; se = se->next) {
- if (!strncmp(se->idstr, idstr, HVM_SE_IDSTR_LEN) &&
+ if (!strncmp(se->idstr, idstr, sizeof(se->idstr)) &&
instance_id == se->instance_id){
return se;
}
static void parse_acpi_param(char *s)
{
/* Save the parameter so it can be propagated to domain0. */
- strlcpy(acpi_param, s, sizeof(acpi_param));
+ safe_strcpy(acpi_param, s);
/* Interpret the parameter for use within Xen. */
if ( !strcmp(s, "off") )
if ( (cmdline = strchr(cmdline, ' ')) != NULL )
{
while ( *cmdline == ' ' ) cmdline++;
- strcpy(dom0_cmdline, cmdline);
+ safe_strcpy(dom0_cmdline, cmdline);
}
cmdline = dom0_cmdline;
static void setup_note(Elf_Note *n, const char *name, int type, int descsz)
{
- strcpy(ELFNOTE_NAME(n), name);
+ safe_strcpy(ELFNOTE_NAME(n), name);
n->namesz = strlen(name);
n->descsz = descsz;
n->type = type;
ASSERT(key_table[key].u.handler == NULL);
key_table[key].u.handler = handler;
key_table[key].flags = 0;
- strlcpy(key_table[key].desc, desc, STR_MAX);
- key_table[key].desc[STR_MAX-1] = '\0';
+ safe_strcpy(key_table[key].desc, desc);
}
void register_irq_keyhandler(
ASSERT(key_table[key].u.irq_handler == NULL);
key_table[key].u.irq_handler = handler;
key_table[key].flags = KEYHANDLER_IRQ_CALLBACK;
- strlcpy(key_table[key].desc, desc, STR_MAX);
+ safe_strcpy(key_table[key].desc, desc);
}
static void show_handlers(unsigned char key)
switch (type)
{
case XEN_ELFNOTE_LOADER:
- elf_strlcpy(parms->loader, str, sizeof(parms->loader));
+ safe_strcpy(parms->loader, str);
break;
case XEN_ELFNOTE_GUEST_OS:
- elf_strlcpy(parms->guest_os, str, sizeof(parms->guest_os));
+ safe_strcpy(parms->guest_os, str);
break;
case XEN_ELFNOTE_GUEST_VERSION:
- elf_strlcpy(parms->guest_ver, str, sizeof(parms->guest_ver));
+ safe_strcpy(parms->guest_ver, str);
break;
case XEN_ELFNOTE_XEN_VERSION:
- elf_strlcpy(parms->xen_ver, str, sizeof(parms->xen_ver));
+ safe_strcpy(parms->xen_ver, str);
break;
case XEN_ELFNOTE_PAE_MODE:
if (0 == strcmp(str, "yes"))
/* strings */
if (0 == strcmp(name, "LOADER"))
- elf_strlcpy(parms->loader, value, sizeof(parms->loader));
+ safe_strcpy(parms->loader, value);
if (0 == strcmp(name, "GUEST_OS"))
- elf_strlcpy(parms->guest_os, value, sizeof(parms->guest_os));
+ safe_strcpy(parms->guest_os, value);
if (0 == strcmp(name, "GUEST_VER"))
- elf_strlcpy(parms->guest_ver, value, sizeof(parms->guest_ver));
+ safe_strcpy(parms->guest_ver, value);
if (0 == strcmp(name, "XEN_VER"))
- elf_strlcpy(parms->xen_ver, value, sizeof(parms->xen_ver));
+ safe_strcpy(parms->xen_ver, value);
if (0 == strcmp(name, "PAE"))
{
if (0 == strcmp(value, "yes[extended-cr3]"))
#define bswap_32(x) swab32(x)
#define bswap_64(x) swab64(x)
-#define elf_strlcpy(d,s,c) strlcpy(d,s,c)
-
#else /* !__XEN__ */
#include <stdio.h>
xc_set_error(XC_INVALID_KERNEL, fmt , ## args ); \
} while (0)
-/* SysV unices have no strlcpy/strlcat. */
-static inline size_t elf_strlcpy(char *dest, const char *src, size_t size)
-{
- strncpy(dest, src, size-1);
- dest[size-1] = '\0';
- return strlen(src);
-}
+#define safe_strcpy(d,s) \
+do { strncpy((d),(s),sizeof((d))-1); \
+ (d)[sizeof((d))-1] = '\0'; \
+} while (0)
#endif
{
for ( i = 0; i < NR_PERFCTRS; i++ )
{
- strlcpy(perfc_d[i].name, perfc_info[i].name,
- sizeof(perfc_d[i].name));
+ safe_strcpy(perfc_d[i].name, perfc_info[i].name);
switch ( perfc_info[i].type )
{
if ( name != NULL )
{
- strlcpy(r->name, name, sizeof(r->name));
+ safe_strcpy(r->name, name);
}
else
{
void set_printk_prefix(const char *prefix)
{
- strcpy(printk_prefix, prefix);
+ safe_strcpy(printk_prefix, prefix);
}
void init_console(void)
ASSERT(debugtrace_buf[debugtrace_bytes - 1] == 0);
- sprintf(buf, "%u ", ++count);
+ snprintf(buf, sizeof(buf), "%u ", ++count);
va_start(args, fmt);
(void)vsnprintf(buf + strlen(buf), sizeof(buf), fmt, args);
}
#endif
-#define safe_strcpy(d,s) \
-do { strncpy((d),(s),sizeof((d))); \
- (d)[sizeof((d))-1] = '\0'; \
-} while (0)
+#define safe_strcpy(d, s) strlcpy(d, s, sizeof(d))
#endif /* _LINUX_STRING_H_ */